package trabalho1;

public class ImportarDadosPrecos extends ImportarDados{
    
    private final int QtdeAtributos = 3;
    
    private Preco[] precosTxt;
    private final LerDat lerDat = new LerDat(); 
    private final Preco[] precosDat = lerDat.getPrecos();
    
    @Override
    void atribuir(){
        String dataDeVigencia = null;
        String codigoDeProduto = null;
        String precoDoProduto = null;
        String[] linhas = super.getLinhas();

        int i = 0;
        int j = 0;        
        precosTxt = new Preco[linhas.length / QtdeAtributos];
        
        do{            
            dataDeVigencia = linhas[i];
            codigoDeProduto = linhas[i+1];
            precoDoProduto = linhas[i+2];
            
            precosTxt[j] = new Preco(dataDeVigencia, codigoDeProduto, 
                    precoDoProduto);       
            
            i+= QtdeAtributos;
            j++;
        }while(i<linhas.length - (QtdeAtributos - 1));        
    } 
    
    void exibir(){
        for(int i=0; i<precosTxt.length; i++)
            System.out.println("Data: " + precosTxt[i].getDataVigencia()+
                    "  Código: " + precosTxt[i].getCodigoProduto()+
                    " Preço: " + precosTxt[i].getPrecoProduto());
    } 
    
    private void atualizarPrecos(){
        for(int i=0; i<precosTxt.length; i++)
            for (int j=0; j<precosDat.length; j++)
                if ((precosTxt[i].getCodigoProduto().equals(precosDat[j].getCodigoProduto()) 
                        && (precosTxt[i].getDataVigencia().equals(precosDat[j].getDataVigencia()))))

                    precosDat[j].setPrecoProduto(precosTxt[i].getPrecoProduto());                
    }
    
    private void exibirAntesAtualizacao(){
        System.out.printf("\nPreçoss.dat antes de ser atualizado:\n");
        for(int i=0; i<precosDat.length; i++)
            System.out.println("Data: " + precosDat[i].getDataVigencia()+
                    "  Código: " + precosDat[i].getCodigoProduto() +
                    "  Preço: " + precosDat[i].getPrecoProduto());
    }
    
    private void exibirDepoisAtualizacao(){
        System.out.printf("\nPreços.dat depois de ser atualizado:\n");
        for(int i=0; i<precosDat.length; i++)
            System.out.println("Data: " + precosDat[i].getDataVigencia() +
                    "  Código: " + precosDat[i].getCodigoProduto()+
                    "  Preço: " + precosDat[i].getPrecoProduto());
    }

    public ImportarDadosPrecos(String nomeArquivo) {
        super(nomeArquivo);
        dividirEmLinhas();
        atribuir();
        exibir();
        exibirAntesAtualizacao();
        atualizarPrecos();
        exibirDepoisAtualizacao();
        super.gravarDados("Preços.dat", precosDat); 
    } 
    
}
